Status deste relatório: working in progress
Metadados do artigo aceito para publicação na RSP, de autoria de Rony Coelho, Felipe Guth e Miguel Loureiro
Neste relatório são disponibilizados os códigos e as bases de dados utilizados no artigo
Para verificar os códigos, clique em Code
Os chuncks dos códigos estão comentados com informações antecedidas por #
Um versão deste relatorio em formato de script (arquivo .Rmd) pode ser encontrada no github dos autores
Os dados brutos podem acessados nos respectivos links fornecidos oportunamente
Carregar pacotes
Definir funções
# limpar enviroment
rm(list = ls())
# Desabilitar notação científica
options(scipen = 999)
# Instalar este pacote para quem não o tem
#install.packages("pacman")
pacman::p_load(tidyverse, readxl, janitor, sjPlot,
scales, DataExplorer, DT, gridExtra,
viridis, ggcorrplot, VGAM, geobr, ggthemes)
# A funcao carrega dois objetos:
# 1 - O dicionário da Munic, contido na primeira aba do excel;
# 2 - Os dados das Munics contidos em todas as demais abas, unidos por "A1"
carregar_munics <- function(link_da_munic, ano){
# definir diretório e arquivo temporário
wd_origin <- getwd()
temp_dir <- tempdir()
setwd(temp_dir)
file.remove(list.files(path = temp_dir))
temp_file <- tempfile(tmpdir = temp_dir)
# Criar lista para armazenar arquivos
Munic_list <- list()
# Download da Munic
download.file(url = link_da_munic, destfile = temp_file)
# unizip
unzip(temp_file)
# remover temporário
file.remove(temp_file)
# selecionar o arquivo xls
file.xls <- list.files(pattern = "xls")
# Nome da Munic
Munic <- paste0("Munic_", ano)
# Carregar todas as abas do excel
Munic <- file.xls %>%
excel_sheets() %>%
set_names() %>%
map(read_excel, path = file.xls)
# remover arquivo xls da pasta temporaria
file.remove(file.xls)
# Nome do dicionario
dic <- paste0("dic_", ano)
# selecionar dicionário
dic <- Munic[[1]]
# excluir dicionário
Munic[[1]] <- NULL
# Mesclar todas as abas do excel
Munic <- Munic %>%
reduce(full_join, by = "A1")
# Criar nome da lista
list <- paste0("list_", Munic)
# criar lista com dicionário e Munic
list <- list(dic, Munic)
# retornar ao diretório orginal
setwd(wd_origin)
# retornar objeto list com dicionário e Munics
return(list)
}
########################################
# Munic 2014
Munic_14_link <- "ftp://ftp.ibge.gov.br/Perfil_Municipios/2014/base_MUNIC_xls_2014.zip"
Munic_14 <- carregar_munics(link_da_munic = Munic_14_link,
ano = 2014)
Munic_dic_14 <- Munic_14[[1]]
Munic_14 <- Munic_14[[2]]
########################################
# Munic 2013 - Suplementar
Munic_13sup_link <- "ftp://ftp.ibge.gov.br/Perfil_Municipios/Assistencia_Social_2013/xls/base_assist_social_2013.zip"
Munic_13 <- carregar_munics(link_da_munic = Munic_13sup_link,
ano = 2013)
Munic_dic_13 <- Munic_13[[1]]
Munic_13 <- Munic_13[[2]]
########################################
# Munic 2015
Munic_15_link <- "ftp://ftp.ibge.gov.br/Perfil_Municipios/2015/Base_de_Dados/Base_MUNIC_2015_xls.zip"
Munic_15 <- carregar_munics(link_da_munic = Munic_15_link,
ano = 2015)
Munic_dic_15 <- Munic_15[[1]]
Munic_15 <- Munic_15[[2]]
########################################
# Pib
pib_link <- "ftp://ftp.ibge.gov.br/Pib_Municipios/2017/base/base_de_dados_2010_2017_xls.zip"
temp_dir <- tempdir()
#
temp_file2 <- tempfile(tmpdir = temp_dir)
# download
download.file(url = pib_link, destfile = temp_file2)
#unzip
unzip(temp_file2)
# selecionar arquivo
file.xls <- list.files(pattern = "xls")
pib <- rio::import(file.xls)
file.remove(file.xls)
########################################
# Carregar dados do idh-m
idhm_link <- "http://atlasbrasil.org.br/2013/data/rawData/atlas2013_dadosbrutos_pt.xlsx"
idhm <- rio::import(idhm_link, sheet = 2)
#idhm <- read_excel("idh_census.xlsx", sheet = 2)
########################################
# base de códigos IBGE
#cod <- read_excel("codigos.xlsx") %>%
# dplyr::select(1:2)
# Uso particular para configurações no computador pessoal
#setwd("C:/r_files/my_academic_projects/capacidades/capacitties")
#save.image("capacities_raw_data.RData")
load("capacities_raw_data.RData")
###########################################
# Munic 2014 - saúde e educação
index_14 <- c("A263", # Conselho de Saúde
"A271", # Fundo de Saúde
"A273", # Plano de Saúde
"A251", # Secretaria de Saúde
"A256", # Servidores da Saúde
"A207", # Conselho de Educação
"A224", # Conselho do Fundeb, proxy para o fundo
"A203", # Plano de Educação
"A157", # Secretaria de Educação
"A167", # Servidores da Educação
#"A392", # Secretaria Direitos Humanos
#"A545", # Fundo Direitos Humanos
#"A410", # Plano Direitos Humanos
#"A442", # Conselho Direitos Humanos
"A2", # Total de servidores do Municipio
"A12", # Total com ensino Superior
"A13") # Total com pós-graduação
Munic_14_sel <- Munic_14 %>%
dplyr::select(A1,
A1022:A1029, # região, população e porte
index_14)
###########################################
#Munic 2013 - Assistência Social
index_13 <- c("A1",
"A199", # Conselho da Assit. Social
"A230", # Fundo da Assist. Social
"A149", # Plano da Assist. Social
"A2", # Secretaria de Assist. Social
"A39") # Servidores da Assist. Social
Munic_13_sel <- Munic_13 %>%
dplyr::select(index_13)
###########################################
# Munic 2015 - consórcios
index_15 <- c("A1",
"A151", # Consórcio de Educação
"A152", # Intermunicipal
"A153", # Estadual
"A154", # Federal
"A155", # Consórcio de Saúde
"A156", # Intermunicipal
"A157", # Estadual
"A158", # Federal
"A159", # Consórcio de Assist. Social
"A160", # Intermunicipal
"A161", # Estadual
"A162") # Federal
Munic_15_sel <- Munic_15 %>%
dplyr::select(index_15)
###########################################
# PIB - 2014
pib <- clean_names(pib)
pib_sel <- pib %>% #glimpse()
filter(ano == 2014) %>%
select(A1 = codigo_do_municipio, ano,
pib_total = produto_interno_bruto_a_precos_correntes_r_1_000,
pib_per_cap = produto_interno_bruto_per_capita_a_precos_correntes_r_1_00)%>%
arrange(desc(pib_per_cap))
###########################################
# IDH-M - 2010
idhm_sel <- idhm %>%
dplyr::select(A1 = Codmun7, ANO, IDHM) %>%
filter(ANO==2010) %>%
arrange(desc(IDHM))
# garantir que os códigos possuem a mesma classficação
Munic_13_sel$A1 <- as.character(Munic_13_sel$A1)
Munic_15_sel$A1 <- as.character(Munic_15_sel$A1)
Munic_14_sel$A1 <- as.character(Munic_14_sel$A1)
pib_sel$A1 <- as.character(pib_sel$A1)
idhm_sel$A1 <- as.character(idhm_sel$A1)
# Criar variavel com código de 6 digitos para mesclar com a Munic 2013 e mesclar todas as Munics
capacities <- Munic_14_sel %>%
mutate(A1a = str_sub(A1,start = 1, end = 6)) %>%
select(A1, A1a, everything()) %>%
full_join(Munic_13_sel, by = c("A1a"="A1")) %>%
full_join(Munic_15_sel, by = c("A1"="A1"))
# Mesclar pib e idhm
capacities <- capacities %>%
full_join(pib_sel) %>%
full_join(idhm_sel)
capacities %>% head(10)
capacities <- capacities %>%
select(cod_mun = A1,
nm_mun = A1027,
populacao = A1028,
faixa_pop = A1029,
cod_est = A1022,
nm_est = A1025,
sg_est = A1026,
regiao = A1024,
# Secretarias
sc_sa = A251,
sc_as = A2.y,
sc_ed = A157.x,
# Planos
pl_sa = A273,
pl_as = A149,
pl_ed = A203,
# Fundos
fu_sa = A271,
fu_as = A230,
fu_ed = A224,
# Conselhos
chl_sa = A263,
chl_as = A199,
chl_ed = A207,
# Servidores
ser_sa = A256,
ser_as = A39,
ser_ed = A167,
# Consórciso
consor_ed = A151,
#consor_ed_mun = A152 ,
#consor_ed_est = A153,
#consor_ed_un = A154,
consor_sa = A155,
#consor_sa_mun = A156,
#consor_sa_est = A157.y,
#consor_sa_un = A158,
consor_as = A159,
#consor_as_mun = A160,
#consor_as_est = A161,
#consor_as_un = A162,
pib_total = pib_total,
pib_per_cap = pib_per_cap,
ano_pib = ano,
idhm = IDHM,
ano_idhm = ANO)
# Verificar existência de NAs
DataExplorer::plot_missing(capacities)
# NA - presentes apenas nos IDHM
# Excluir NA's
# Removidos 5 municipios não criados até 2010, portante sem o IDHM para esse ano.
capacities <- capacities %>%
drop_na(idhm)
DataExplorer::plot_missing(capacities)
capacities_1 <- capacities
Podem ser baixados em formato excel ou csv
Legenda:
capacities_1 %>%
datatable(extensions = 'Buttons',
rownames = F,
options = list(dom = 'Blfrtip',
buttons = c('csv', 'excel'),
autoFill = TRUE,
fixedHeader = TRUE,
autowidth = TRUE,
paging = F,
scrollX = TRUE,
scrollY = "400px"))
# Uso particular para configurações de uso pessoal
#setwd("C:/r_files/my_academic_projects/capacidades/capacitties")
#save.image("capacities_raw_data_2.RData")
#load("capacities_raw_data_2.RData")
De 5.565 mun. passamos a trabalhar com 4.917 (88%)
capacities_2 <- capacities_1 %>%
filter(populacao <= 50000) %>%
mutate(faixa_pop = faixa_pop %>% as.factor())
Categorias
Quantidades em cada categoria
Estatisticas descritivas básicas
unique(capacities_2$faixa_pop)
## [1] 4 - 20001 até 50000 2 - 5001 até 10000 3 - 10001 até 20000
## [4] 1 - Até 5000
## 4 Levels: 1 - Até 5000 2 - 5001 até 10000 ... 4 - 20001 até 50000
table(summary(capacities_2$faixa_pop))
##
## 1080 1214 1242 1381
## 1 1 1 1
summary(capacities_2$populacao)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 822 4967 10008 13312 18595 49963
character_col <- c("cod_mun", "nm_mun")
factor_col <- c("cod_est", "nm_est", "sg_est","faixa_pop", "regiao", "sc_sa", "sc_as", "sc_ed", "pl_sa", "pl_as", "pl_ed", "fu_sa", "fu_as", "fu_ed", "chl_sa", "chl_as", "chl_ed", "consor_ed", "consor_ed", "consor_sa", "consor_as")
numeric_col <- c("populacao", "ser_sa", "ser_as", "ser_ed", "pib_total", "pib_per_cap", "ano_pib", "idhm","ano_idhm")
capacities_2 <- capacities_2 %>%
mutate_at(character_col, as.character) %>%
mutate_at(factor_col, as.factor) %>%
mutate_at(numeric_col, as.numeric)
Numéricas: são apresentados valores mínimos, máximos, média, mediana etc.
Categóricas: categorias e quantidade de cada uma
Character: quantidade de valores únicos
summary(capacities_2)
## cod_mun nm_mun populacao
## Length:4917 Length:4917 Min. : 822
## Class :character Class :character 1st Qu.: 4967
## Mode :character Mode :character Median :10008
## Mean :13312
## 3rd Qu.:18595
## Max. :49963
##
## faixa_pop cod_est nm_est
## 1 - Até 5000 :1242 31 : 785 Minas Gerais : 785
## 2 - 5001 até 10000 :1214 35 : 512 São Paulo : 512
## 3 - 10001 até 20000:1381 43 : 453 Rio Grande do Sul: 453
## 4 - 20001 até 50000:1080 29 : 370 Bahia : 370
## 41 : 364 Paraná : 364
## 42 : 265 Santa Catarina : 265
## (Other):2168 (Other) :2168
## sg_est regiao
## MG : 785 1 - Norte : 379
## SP : 512 2 - Nordeste :1611
## RS : 453 3 - Sudeste :1419
## BA : 370 4 - Sul :1082
## PR : 364 5 - Centro-Oeste: 426
## SC : 265
## (Other):2168
## sc_sa
## Não informado : 2
## Órgão da administração indireta : 4
## Recusa : 1
## Secretaria municipal em conjunto com outras políticas: 366
## Secretaria municipal exclusiva :4417
## Setor subordinado a outra secretaria : 10
## Setor subordinado diretamente à chefia do Executivo : 117
## sc_as
## Fundação pública : 3
## Não possui estrutura : 2
## Recusa : 1
## Secretaria municipal em conjunto com outras políticas: 963
## Secretaria municipal exclusiva :3727
## Setor subordinado a outra secretaria : 82
## Setor subordinado diretamente à chefia do Executivo : 139
## sc_ed
## Não informado : 1
## Órgão da administração indireta : 2
## Recusa : 1
## Secretaria municipal em conjunto com outras políticas:1983
## Secretaria municipal exclusiva :2751
## Setor subordinado à outra secretaria : 9
## Setor subordinado diretamente à chefia do Executivo : 170
## pl_sa pl_as pl_ed fu_sa
## Não : 122 Não : 286 Não :2852 Não : 4
## Não informado: 3 Recusa: 1 Não informado: 3 Não informado: 3
## Recusa : 1 Sim :4630 Recusa : 1 Recusa : 1
## Sim :4791 Sim :2061 Sim :4909
##
##
##
## fu_as fu_ed chl_sa chl_as
## Não : 31 Não : 72 Não : 10 Não : 5
## Recusa: 1 Não informado: 3 Não informado: 2 Recusa: 1
## Sim :4885 Recusa : 1 Recusa : 1 Sim :4911
## Sim :4841 Sim :4904
##
##
##
## chl_ed ser_sa ser_as ser_ed
## Não : 666 Min. : 1.0 Min. : 0.000 Min. : 0.0
## Não informado: 3 1st Qu.: 61.0 1st Qu.: 2.000 1st Qu.: 94.0
## Recusa : 1 Median : 100.0 Median : 5.000 Median : 179.0
## Sim :4247 Mean : 135.7 Mean : 8.559 Mean : 267.4
## 3rd Qu.: 179.0 3rd Qu.: 11.000 3rd Qu.: 364.0
## Max. :1253.0 Max. :180.000 Max. :2460.0
## NA's :50 NA's :11 NA's :29
## consor_ed consor_sa consor_as
## Não :4594 Não :2396 Não :4513
## Não informado: 1 Não informado: 1 Não informado: 1
## Recusa : 1 Recusa : 1 Recusa : 1
## Sim : 321 Sim :2519 Sim : 402
##
##
##
## pib_total pib_per_cap ano_pib idhm
## Min. : 11715 Min. : 3082 Min. :2014 Min. :0.4180
## 1st Qu.: 58829 1st Qu.: 7491 1st Qu.:2014 1st Qu.:0.5940
## Median : 119973 Median : 12951 Median :2014 Median :0.6570
## Mean : 238100 Mean : 17625 Mean :2014 Mean :0.6521
## 3rd Qu.: 251339 3rd Qu.: 21434 3rd Qu.:2014 3rd Qu.:0.7100
## Max. :11915834 Max. :815698 Max. :2014 Max. :0.8540
##
## ano_idhm
## Min. :2010
## 1st Qu.:2010
## Median :2010
## Mean :2010
## 3rd Qu.:2010
## Max. :2010
##
1 mun. (cod_mun: 2102150) recusou-se a responder todas as questões
1 mun. (cod_mun: 2102150) recusou-se a responder questões sobre consórcios
Outros casos serão excluídos oportunamente
# capacities_2[which(capacities_2$sc_as == "Recusa"), ]
# capacities_2[which(capacities_2$sc_ed == "Recusa"), ]
# capacities_2[which(capacities_2$consor_ed == "Recusa"), ]
# # A tibble: 1 x 31
# cod_mun nm_mun populacao faixa_pop cod_est nm_est sg_est regiao sc_sa sc_as sc_ed pl_sa pl_as pl_ed
# <chr> <chr> <dbl> <fct> <fct> <fct> <fct> <fct> <fct> <fct> <fct> <fct> <fct> <fct>
# 1 2102150 Brejo~ 4291 1 - Até ~ 21 Maran~ MA 2 - N~ Recu~ Recu~ Recu~ Recu~ Recu~ Recu~
# Filtrar 1 municipio com recusa para todas as variáveis
capacities_2 <- filter(capacities_2, cod_mun != 2102150)
capacities_2 <- filter(capacities_2, cod_mun != 4110508)
# 4.915 casos
Operação em dois passos
# verificar labels
unique(capacities_2$sc_sa)
## [1] Secretaria municipal exclusiva
## [2] Setor subordinado diretamente à chefia do Executivo
## [3] Secretaria municipal em conjunto com outras políticas
## [4] Setor subordinado a outra secretaria
## [5] Não informado
## [6] Órgão da administração indireta
## 7 Levels: Não informado Órgão da administração indireta ... Setor subordinado diretamente à chefia do Executivo
unique(capacities_2$sc_ed)
## [1] Secretaria municipal exclusiva
## [2] Secretaria municipal em conjunto com outras políticas
## [3] Setor subordinado diretamente à chefia do Executivo
## [4] Órgão da administração indireta
## [5] Setor subordinado à outra secretaria
## [6] Não informado
## 7 Levels: Não informado Órgão da administração indireta ... Setor subordinado diretamente à chefia do Executivo
unique(capacities_2$sc_as)
## [1] Secretaria municipal em conjunto com outras políticas
## [2] Secretaria municipal exclusiva
## [3] Setor subordinado diretamente à chefia do Executivo
## [4] Setor subordinado a outra secretaria
## [5] Fundação pública
## [6] Não possui estrutura
## 7 Levels: Fundação pública Não possui estrutura ... Setor subordinado diretamente à chefia do Executivo
Transformar Secretaria municipal exclusiva = Sim
Outras modalidades = Não
# Transformar Secretaria exclusiva = Sim.
capacities_2 <- capacities_2 %>%
mutate_at(vars(sc_sa:sc_ed),
funs(ifelse(.=="Secretaria municipal exclusiva", "Sim","Não")))
quantidades e porcentagens por setor
capacities_2 %>%
count(sc_sa, name = "quantidade") %>%
mutate(perc = quantidade/sum(quantidade)*100)
capacities_2 %>%
count(sc_as, name = "quantidade") %>%
mutate(perc = quantidade/sum(quantidade)*100)
capacities_2 %>%
count(sc_ed, name = "quantidade") %>%
mutate(perc = quantidade/sum(quantidade)*100)
Transformar todas as respostas “Sim” = 1;
Todas demais opções (“Não”, “Não informado”, etc) = 0
Depois, realizar a contagem de “Sim” e classificar
# Criar dummies 1 = Sim; 0 = Não.
capacities_2 <- capacities_2 %>%
mutate_at(vars(sc_sa:sc_ed), funs(ifelse(.== "Sim", 1, 0)))
# Contar quantidade de "sim" e organizar colunas
capacities_2 <- capacities_2 %>%
mutate(Num_sc = rowSums(select(.,sc_sa:sc_ed))) %>%
relocate(Num_sc, .after = sc_ed)
# Verificar
capacities_2 %>%
count(Num_sc, name = "quantidade") %>%
mutate(perc = quantidade/sum(quantidade)*100)
# Categorizar quantidade de secretarias
capacities_2 <- capacities_2 %>%
mutate(Sc_class = case_when(
Num_sc == 3 ~ "Possui 3",
Num_sc == 2 ~ "Possui 2",
Num_sc == 1 ~ "Possui 1",
Num_sc == 0 ~ "Não possui")) %>%
relocate(Sc_class, .after = Num_sc)
levels_cat <- c("Não possui" ,"Possui 1", "Possui 2","Possui 3")
capacities_2$Sc_class <- ordered(capacities_2$Sc_class,
levels = c(levels_cat))
# Verificar lables
unique(capacities_1$pl_as)
## [1] "Sim" "Não" "Recusa"
unique(capacities_1$pl_sa)
## [1] "Sim" "Não" "Recusa" "Não informado"
unique(capacities_1$pl_ed)
## [1] "Sim" "Não" "Não informado" "Recusa"
# Criar dummies 1 = Sim; 0 = Não.
capacities_2 <- capacities_2 %>%
mutate_at(vars(pl_sa:pl_ed), funs(ifelse(.== "Sim", 1, 0)))
# Contar quantidade de "sim" e organizar colunas
capacities_2 <- capacities_2 %>%
mutate(Num_pl = rowSums(select(.,pl_sa:pl_ed)))%>%
relocate(Num_pl, .after = pl_ed)
# Categorizar quantidade de planos planos
capacities_2 <- capacities_2 %>%
mutate(Pl_class = case_when(
Num_pl == 3 ~ "Possui 3",
Num_pl == 2 ~ "Possui 2",
Num_pl == 1 ~ "Possui 1",
Num_pl == 0 ~ "Não possui")) %>%
relocate(Pl_class, .after = Num_pl)
capacities_2$Pl_class <- ordered(capacities_2$Pl_class,
levels = c(levels_cat))
# Verificar lables
unique(capacities_1$fu_as)
## [1] "Sim" "Não" "Recusa"
unique(capacities_1$fu_sa)
## [1] "Sim" "Recusa" "Não informado" "Não"
unique(capacities_1$fu_ed)
## [1] "Sim" "Não" "Não informado" "Recusa"
# Criar dummies 1 = Sim; 0 = Não.
capacities_2 <- capacities_2 %>%
mutate_at(vars(fu_sa:fu_ed), funs(ifelse(.== "Sim", 1, 0)))
# Contar quantidade de "sim" e organizar colunas
capacities_2 <- capacities_2 %>%
mutate(Num_fu = rowSums(select(.,fu_sa:fu_ed)))%>%
relocate(Num_fu, .after = fu_ed)
# Categorizar quantidade de fundos
capacities_2 <- capacities_2 %>%
mutate(Fu_class = case_when(
Num_fu == 3 ~ "Possui 3",
Num_fu == 2 ~ "Possui 2",
Num_fu == 1 ~ "Possui 1",
Num_fu == 0 ~ "Não possui")) %>%
relocate(Fu_class, .after = Num_fu)
capacities_2$Fu_class <- ordered(capacities_2$Fu_class,
levels = c(levels_cat))
# Verificar lables
unique(capacities_1$chl_as)
## [1] "Sim" "Não" "Recusa"
unique(capacities_1$chl_sa)
## [1] "Sim" "Não" "Recusa" "Não informado"
unique(capacities_1$chl_ed)
## [1] "Não" "Sim" "Não informado" "Recusa"
# Criar dummies 1 = Sim; 0 = Não.
capacities_2 <- capacities_2 %>%
mutate_at(vars(chl_sa:chl_ed), funs(ifelse(.== "Sim", 1, 0)))
# Contar quantidade de "sim" e organizar colunas
capacities_2 <- capacities_2 %>%
mutate(Num_chl = rowSums(select(.,chl_sa:chl_ed)))%>%
relocate(Num_chl, .after = chl_ed)
# Categorizar quantidade de planos planos
capacities_2 <- capacities_2 %>%
mutate(Chl_class = case_when(
Num_chl == 3 ~ "Possui 3",
Num_chl == 2 ~ "Possui 2",
Num_chl == 1 ~ "Possui 1",
Num_chl == 0 ~ "Não possui")) %>%
relocate(Chl_class, .after = Num_chl)
capacities_2$Chl_class <- ordered(capacities_2$Chl_class,
levels = c(levels_cat))
# Assistência Social
levels(capacities_2$consor_as)
## [1] "Não" "Não informado" "Recusa" "Sim"
levels(capacities_2$consor_ed)
## [1] "Não" "Não informado" "Recusa" "Sim"
levels(capacities_2$consor_sa)
## [1] "Não" "Não informado" "Recusa" "Sim"
capacities_2 <- capacities_2 %>%
mutate_at(vars(consor_ed:consor_as),
funs(ifelse(.== "Sim", 1, 0)))
# Contar quantidade de "sim" e organizar colunas
capacities_2 <- capacities_2 %>%
mutate(Num_consor = rowSums(select(.,consor_ed:consor_as)))%>%
relocate(Num_consor, .after = consor_as)
# Categorizar quantidade de planos planos
capacities_2 <- capacities_2 %>%
mutate(Consor_class = case_when(
Num_consor == 3 ~ "Possui 3",
Num_consor == 2 ~ "Possui 2",
Num_consor == 1 ~ "Possui 1",
Num_consor == 0 ~ "Não possui")) %>%
relocate(Consor_class, .after = Num_consor)
capacities_2$Consor_class <- ordered(capacities_2$Consor_class,
levels = c(levels_cat))
capacities_2 <- capacities_2 %>%
mutate(ser_sa_pop = ser_sa*10000/populacao,
ser_ed_pop = ser_ed*10000/populacao,
ser_as_pop = ser_as*10000/populacao,
total_ser_por_10mil_hab = ser_sa_pop + ser_ed_pop + ser_as_pop,
total_ser_por_10mil_hab = round(total_ser_por_10mil_hab)) %>%
relocate(ser_sa:ser_ed, .after = Consor_class ) %>%
relocate(ser_sa_pop:total_ser_por_10mil_hab, .after = ser_ed)
#Verificar quantiles
quantile(capacities_2$idhm, c(.2,.4,.6,.8,1))
## 20% 40% 60% 80% 100%
## 0.584 0.629 0.681 0.719 0.854
min(capacities_2$idhm)
## [1] 0.418
max(capacities_2$idhm)
## [1] 0.854
# 20% 40% 60% 80% 100%
# 0.584 0.629 0.681 0.719 0.854
capacities_2 <- capacities_2 %>%
mutate(idhm_quintil = case_when(
idhm <= 0.584 ~ "primeiro",
idhm >= 0.585 & idhm <= 0.629 ~ "segundo",
idhm >= 0.630 & idhm <= 0.681 ~ "terceiro",
idhm >= 0.682 & idhm <= 0.719 ~ "quarto",
idhm >= 0.720 ~ "quinto"))
levels_idhm = c("primeiro", "segundo", "terceiro", "quarto", "quinto")
capacities_2$idhm_quintil <- ordered(capacities_2$idhm_quintil,
levels = c(levels_idhm))
Do artigo:
“Para operacionalizar essa variável, devido à necessidade de ajuste ao modelo logístico empregado (Yee, 2010), ao invés de trabalharmos com as gradações oficiais, trabalhamos com os quintis da distribuição observada , ordenados de forma crescente” (p. 10)
“Pela classificação do Atlas Brasil, dentre os 4.916 municípios analisados, apenas 30 se enquadram na classificação “muito baixo” e 5, na “muito alto”. Isso gera alta concentração nas categorias intermediárias (“baixo” = 1.316; “médio”= 2.054 e “alto” = 1.511). Ao adotar a classificação por quintis, aproximadamente 25% dos valores ficam classificadas em cada uma das categoriais, o que representa uma distribuição mais homogênea entre as categorias e permite a melhor aplicação do modelo logístico de regressão." (p. 10, nota 4)
capacities_2 %>%
count(idhm_quintil, name = "qtdd_de_mun") %>%
mutate(perc = qtdd_de_mun/sum(qtdd_de_mun)*100)
Criada para preservar os dados brutos em caso de reutilização
capacities_3 <- capacities_2
capacities_3 %>%
datatable(extensions = 'Buttons',
rownames = F,
options = list(dom = 'Blfrtip',
buttons = c('csv', 'excel'),
autoFill = TRUE,
fixedHeader = TRUE,
autowidth = TRUE,
paging = F,
scrollX = TRUE,
scrollY = "400px"))
# Verificar existência de NAs
DataExplorer::plot_missing(capacities_3)
# NA - presentes apenas na quantidade de servidores
# 1,46% dos casos está com NA. Excluindo esses, o número de municípios decai para 4.844 (86% do total)
capacities_3 <- capacities_3 %>%
drop_na(total_ser_por_10mil_hab)
DataExplorer::plot_missing(capacities_3)
# Uso particular para configurações
# setwd("C:/r_files/my_academic_projects/capacidades/capacitties")
#save.image("capacities_raw_data_3.RData")
#load("capacities_raw_data_3.RData")
capacities_4 <- capacities_3
vglm, do pacote ‘VGAM’, e os argumentos family = cumulative(parallel = T, reverse = T)No artigo foram reportadas apenas a coluna Estimate e o p-value
olr_brasil <- vglm(idhm_quintil ~ log(pib_per_cap) +
Num_sc + Num_pl + Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
data = capacities_4, family = cumulative(parallel = T, reverse = T))
summary(olr_brasil)
##
## Call:
## vglm(formula = idhm_quintil ~ log(pib_per_cap) + Num_sc + Num_pl +
## Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
## family = cumulative(parallel = T, reverse = T), data = capacities_4)
##
## Pearson residuals:
## Min 1Q Median 3Q Max
## logitlink(P[Y>=2]) -44.96 0.03144 0.09835 0.27810 3.751
## logitlink(P[Y>=3]) -28.26 -0.30005 0.10343 0.29819 35.771
## logitlink(P[Y>=4]) -262.13 -0.26640 -0.10316 0.37688 6.405
## logitlink(P[Y>=5]) -33.97 -0.32335 -0.08986 -0.03877 9.709
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept):1 -27.0379732 0.8095307 -33.400 < 0.0000000000000002
## (Intercept):2 -28.7585372 0.8205219 -35.049 < 0.0000000000000002
## (Intercept):3 -30.4126136 0.8340705 -36.463 < 0.0000000000000002
## (Intercept):4 -32.0944784 0.8466569 -37.907 < 0.0000000000000002
## log(pib_per_cap) 2.9743118 0.0617193 48.191 < 0.0000000000000002
## Num_sc -0.2091919 0.0343997 -6.081 0.000000001193
## Num_pl 0.2831578 0.0495320 5.717 0.000000010863
## Num_fu 0.2458268 0.1793206 1.371 0.17
## Num_chl 0.5061963 0.0806055 6.280 0.000000000339
## total_ser_por_10mil_hab -0.0034046 0.0002197 -15.499 < 0.0000000000000002
## Num_consor 0.1959058 0.0371086 5.279 0.000000129711
##
## (Intercept):1 ***
## (Intercept):2 ***
## (Intercept):3 ***
## (Intercept):4 ***
## log(pib_per_cap) ***
## Num_sc ***
## Num_pl ***
## Num_fu
## Num_chl ***
## total_ser_por_10mil_hab ***
## Num_consor ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Names of linear predictors: logitlink(P[Y>=2]), logitlink(P[Y>=3]),
## logitlink(P[Y>=4]), logitlink(P[Y>=5])
##
## Residual deviance: 11511.06 on 19365 degrees of freedom
##
## Log-likelihood: -5755.53 on 19365 degrees of freedom
##
## Number of Fisher scoring iterations: 7
##
## Warning: Hauck-Donner effect detected in the following estimate(s):
## 'log(pib_per_cap)'
##
##
## Exponentiated coefficients:
## log(pib_per_cap) Num_sc Num_pl
## 19.5761472 0.8112396 1.3273146
## Num_fu Num_chl total_ser_por_10mil_hab
## 1.2786780 1.6589690 0.9966012
## Num_consor
## 1.2164123
norte <- capacities_4 %>%
filter(regiao == "1 - Norte")
olr_norte <- vglm(idhm_quintil ~ log(pib_per_cap) +
Num_sc + Num_pl + Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
data = norte, family = cumulative(parallel = T, reverse = T))
summary(olr_norte)
##
## Call:
## vglm(formula = idhm_quintil ~ log(pib_per_cap) + Num_sc + Num_pl +
## Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
## family = cumulative(parallel = T, reverse = T), data = norte)
##
## Pearson residuals:
## Min 1Q Median 3Q Max
## logitlink(P[Y>=2]) -9.961 -0.6551 0.23297 0.63426 2.579
## logitlink(P[Y>=3]) -10.095 -0.6047 -0.20622 0.65998 2.880
## logitlink(P[Y>=4]) -2.993 -0.2538 -0.11247 -0.06369 9.108
## logitlink(P[Y>=5]) -0.935 -0.0651 -0.04221 -0.02455 6.024
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept):1 -25.1376563 2.7454797 -9.156 < 0.0000000000000002
## (Intercept):2 -26.8860608 2.7873850 -9.646 < 0.0000000000000002
## (Intercept):3 -29.7099819 2.8777449 -10.324 < 0.0000000000000002
## (Intercept):4 -31.7557989 2.9895182 -10.622 < 0.0000000000000002
## log(pib_per_cap) 2.8338888 0.2694537 10.517 < 0.0000000000000002
## Num_sc -0.1625826 0.1495924 -1.087 0.27711
## Num_pl 0.1515197 0.1866814 0.812 0.41699
## Num_fu 0.0083306 0.4378733 0.019 0.98482
## Num_chl 0.1923682 0.2239089 0.859 0.39027
## total_ser_por_10mil_hab -0.0019370 0.0007325 -2.644 0.00818
## Num_consor -0.1748861 0.1563930 -1.118 0.26346
##
## (Intercept):1 ***
## (Intercept):2 ***
## (Intercept):3 ***
## (Intercept):4 ***
## log(pib_per_cap) ***
## Num_sc
## Num_pl
## Num_fu
## Num_chl
## total_ser_por_10mil_hab **
## Num_consor
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Names of linear predictors: logitlink(P[Y>=2]), logitlink(P[Y>=3]),
## logitlink(P[Y>=4]), logitlink(P[Y>=5])
##
## Residual deviance: 780.7116 on 1461 degrees of freedom
##
## Log-likelihood: -390.3558 on 1461 degrees of freedom
##
## Number of Fisher scoring iterations: 7
##
## No Hauck-Donner effect found in any of the estimates
##
##
## Exponentiated coefficients:
## log(pib_per_cap) Num_sc Num_pl
## 17.0114864 0.8499459 1.1636012
## Num_fu Num_chl total_ser_por_10mil_hab
## 1.0083654 1.2121167 0.9980649
## Num_consor
## 0.8395527
nordeste <- capacities_4 %>%
filter(regiao == "2 - Nordeste")
olr_nordeste <- vglm(idhm_quintil ~ log(pib_per_cap) +
Num_sc + Num_pl + Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
data = nordeste, family = cumulative(parallel = T, reverse = T))
summary(olr_nordeste)
##
## Call:
## vglm(formula = idhm_quintil ~ log(pib_per_cap) + Num_sc + Num_pl +
## Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
## family = cumulative(parallel = T, reverse = T), data = nordeste)
##
## Pearson residuals:
## Min 1Q Median 3Q Max
## logitlink(P[Y>=2]) -9.8483 -0.86411 -0.18002 0.96766 2.173
## logitlink(P[Y>=3]) -2.9322 -0.36921 -0.19560 -0.14750 9.575
## logitlink(P[Y>=4]) -0.4855 -0.05911 -0.04669 -0.03788 14.595
## logitlink(P[Y>=5]) -1.2406 -0.01845 -0.01480 -0.01201 10.005
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept):1 -15.5692434 1.5600624 -9.980 < 0.0000000000000002
## (Intercept):2 -18.1526642 1.5832711 -11.465 < 0.0000000000000002
## (Intercept):3 -21.1639466 1.6404541 -12.901 < 0.0000000000000002
## (Intercept):4 -23.3830671 1.8714589 -12.495 < 0.0000000000000002
## log(pib_per_cap) 1.7076624 0.1304349 13.092 < 0.0000000000000002
## Num_sc -0.1266353 0.0727709 -1.740 0.081826
## Num_pl 0.3478522 0.0927298 3.751 0.000176
## Num_fu -0.3931249 0.3164133 -1.242 0.214074
## Num_chl 0.5382545 0.1590285 3.385 0.000713
## total_ser_por_10mil_hab -0.0012899 0.0003989 -3.233 0.001223
## Num_consor 0.0946721 0.0655101 1.445 0.148415
##
## (Intercept):1 ***
## (Intercept):2 ***
## (Intercept):3 ***
## (Intercept):4 ***
## log(pib_per_cap) ***
## Num_sc .
## Num_pl ***
## Num_fu
## Num_chl ***
## total_ser_por_10mil_hab **
## Num_consor
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Names of linear predictors: logitlink(P[Y>=2]), logitlink(P[Y>=3]),
## logitlink(P[Y>=4]), logitlink(P[Y>=5])
##
## Residual deviance: 2776.816 on 6285 degrees of freedom
##
## Log-likelihood: -1388.408 on 6285 degrees of freedom
##
## Number of Fisher scoring iterations: 7
##
## Warning: Hauck-Donner effect detected in the following estimate(s):
## '(Intercept):4'
##
##
## Exponentiated coefficients:
## log(pib_per_cap) Num_sc Num_pl
## 5.5160519 0.8810550 1.4160229
## Num_fu Num_chl total_ser_por_10mil_hab
## 0.6749444 1.7130142 0.9987109
## Num_consor
## 1.0992983
centro_oeste <- capacities_4 %>%
filter(regiao == "5 - Centro-Oeste")
olr_centro_oeste <- vglm(idhm_quintil ~ log(pib_per_cap) +
Num_sc + Num_pl + Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
data = nordeste, family = cumulative(parallel = T, reverse = T))
summary(olr_centro_oeste)
##
## Call:
## vglm(formula = idhm_quintil ~ log(pib_per_cap) + Num_sc + Num_pl +
## Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
## family = cumulative(parallel = T, reverse = T), data = nordeste)
##
## Pearson residuals:
## Min 1Q Median 3Q Max
## logitlink(P[Y>=2]) -9.8483 -0.86411 -0.18002 0.96766 2.173
## logitlink(P[Y>=3]) -2.9322 -0.36921 -0.19560 -0.14750 9.575
## logitlink(P[Y>=4]) -0.4855 -0.05911 -0.04669 -0.03788 14.595
## logitlink(P[Y>=5]) -1.2406 -0.01845 -0.01480 -0.01201 10.005
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept):1 -15.5692434 1.5600624 -9.980 < 0.0000000000000002
## (Intercept):2 -18.1526642 1.5832711 -11.465 < 0.0000000000000002
## (Intercept):3 -21.1639466 1.6404541 -12.901 < 0.0000000000000002
## (Intercept):4 -23.3830671 1.8714589 -12.495 < 0.0000000000000002
## log(pib_per_cap) 1.7076624 0.1304349 13.092 < 0.0000000000000002
## Num_sc -0.1266353 0.0727709 -1.740 0.081826
## Num_pl 0.3478522 0.0927298 3.751 0.000176
## Num_fu -0.3931249 0.3164133 -1.242 0.214074
## Num_chl 0.5382545 0.1590285 3.385 0.000713
## total_ser_por_10mil_hab -0.0012899 0.0003989 -3.233 0.001223
## Num_consor 0.0946721 0.0655101 1.445 0.148415
##
## (Intercept):1 ***
## (Intercept):2 ***
## (Intercept):3 ***
## (Intercept):4 ***
## log(pib_per_cap) ***
## Num_sc .
## Num_pl ***
## Num_fu
## Num_chl ***
## total_ser_por_10mil_hab **
## Num_consor
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Names of linear predictors: logitlink(P[Y>=2]), logitlink(P[Y>=3]),
## logitlink(P[Y>=4]), logitlink(P[Y>=5])
##
## Residual deviance: 2776.816 on 6285 degrees of freedom
##
## Log-likelihood: -1388.408 on 6285 degrees of freedom
##
## Number of Fisher scoring iterations: 7
##
## Warning: Hauck-Donner effect detected in the following estimate(s):
## '(Intercept):4'
##
##
## Exponentiated coefficients:
## log(pib_per_cap) Num_sc Num_pl
## 5.5160519 0.8810550 1.4160229
## Num_fu Num_chl total_ser_por_10mil_hab
## 0.6749444 1.7130142 0.9987109
## Num_consor
## 1.0992983
sudeste <- capacities_4 %>%
filter(regiao == "3 - Sudeste")
olr_sudeste <- vglm(idhm_quintil ~ log(pib_per_cap) +
Num_sc + Num_pl + Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
data = sudeste, family = cumulative(parallel = T, reverse = T))
summary(olr_sudeste)
##
## Call:
## vglm(formula = idhm_quintil ~ log(pib_per_cap) + Num_sc + Num_pl +
## Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
## family = cumulative(parallel = T, reverse = T), data = sudeste)
##
## Pearson residuals:
## Min 1Q Median 3Q Max
## logitlink(P[Y>=2]) -9.515 0.04022 0.06855 0.1308 1.696
## logitlink(P[Y>=3]) -15.354 0.07184 0.13510 0.4036 11.774
## logitlink(P[Y>=4]) -133.081 -0.56684 0.19885 0.5737 4.277
## logitlink(P[Y>=5]) -17.497 -0.61263 -0.17243 0.5507 5.880
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept):1 -22.6676264 1.7546319 -12.919 < 0.0000000000000002
## (Intercept):2 -24.5966565 1.7606390 -13.970 < 0.0000000000000002
## (Intercept):3 -26.7459066 1.7826869 -15.003 < 0.0000000000000002
## (Intercept):4 -28.4277436 1.8009813 -15.785 < 0.0000000000000002
## log(pib_per_cap) 2.4989109 0.1253302 19.939 < 0.0000000000000002
## Num_sc -0.1429834 0.0651513 -2.195 0.0282
## Num_pl -0.0184318 0.0918769 -0.201 0.8410
## Num_fu 0.7452982 0.4334268 1.720 0.0855
## Num_chl 0.9299588 0.1725015 5.391 0.00000007005945
## total_ser_por_10mil_hab -0.0028482 0.0004087 -6.970 0.00000000000318
## Num_consor -0.6012261 0.0885341 -6.791 0.00000000001114
##
## (Intercept):1 ***
## (Intercept):2 ***
## (Intercept):3 ***
## (Intercept):4 ***
## log(pib_per_cap) ***
## Num_sc *
## Num_pl
## Num_fu .
## Num_chl ***
## total_ser_por_10mil_hab ***
## Num_consor ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Names of linear predictors: logitlink(P[Y>=2]), logitlink(P[Y>=3]),
## logitlink(P[Y>=4]), logitlink(P[Y>=5])
##
## Residual deviance: 3241.068 on 5617 degrees of freedom
##
## Log-likelihood: -1620.534 on 5617 degrees of freedom
##
## Number of Fisher scoring iterations: 7
##
## Warning: Hauck-Donner effect detected in the following estimate(s):
## 'log(pib_per_cap)'
##
##
## Exponentiated coefficients:
## log(pib_per_cap) Num_sc Num_pl
## 12.1692336 0.8667684 0.9817370
## Num_fu Num_chl total_ser_por_10mil_hab
## 2.1070697 2.5344048 0.9971559
## Num_consor
## 0.5481392
sul <- capacities_4 %>%
filter(regiao == "4 - Sul")
olr_sul <- vglm(idhm_quintil ~ log(pib_per_cap) +
Num_sc + Num_pl + Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
data = sul, family = cumulative(parallel = T, reverse = T))
summary(olr_sul)
##
## Call:
## vglm(formula = idhm_quintil ~ log(pib_per_cap) + Num_sc + Num_pl +
## Num_fu + Num_chl + total_ser_por_10mil_hab + Num_consor,
## family = cumulative(parallel = T, reverse = T), data = sul)
##
## Pearson residuals:
## Min 1Q Median 3Q Max
## logitlink(P[Y>=2]) -9.781 0.01925 0.0280 0.04021 0.5752
## logitlink(P[Y>=3]) -12.105 0.07094 0.1081 0.17196 0.6690
## logitlink(P[Y>=4]) -8.852 0.11025 0.2481 0.61997 1.6437
## logitlink(P[Y>=5]) -5.944 -0.77174 -0.2736 0.80642 3.5892
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept):1 -17.0657168 2.4201186 -7.052 0.00000000000177
## (Intercept):2 -19.9531426 2.3220108 -8.593 < 0.0000000000000002
## (Intercept):3 -22.3570556 2.3284068 -9.602 < 0.0000000000000002
## (Intercept):4 -24.2017319 2.3463462 -10.315 < 0.0000000000000002
## log(pib_per_cap) 2.4293639 0.1801245 13.487 < 0.0000000000000002
## Num_sc -0.3081553 0.0653510 -4.715 0.00000241247414
## Num_pl 0.0966682 0.1106461 0.874 0.38230
## Num_fu -0.1711954 0.4779037 -0.358 0.72018
## Num_chl 0.1965635 0.2023381 0.971 0.33132
## total_ser_por_10mil_hab -0.0019578 0.0005991 -3.268 0.00108
## Num_consor 0.1425972 0.0856889 1.664 0.09609
##
## (Intercept):1 ***
## (Intercept):2 ***
## (Intercept):3 ***
## (Intercept):4 ***
## log(pib_per_cap) ***
## Num_sc ***
## Num_pl
## Num_fu
## Num_chl
## total_ser_por_10mil_hab **
## Num_consor .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Names of linear predictors: logitlink(P[Y>=2]), logitlink(P[Y>=3]),
## logitlink(P[Y>=4]), logitlink(P[Y>=5])
##
## Residual deviance: 2243.33 on 4297 degrees of freedom
##
## Log-likelihood: -1121.665 on 4297 degrees of freedom
##
## Number of Fisher scoring iterations: 5
##
## Warning: Hauck-Donner effect detected in the following estimate(s):
## 'log(pib_per_cap)'
##
##
## Exponentiated coefficients:
## log(pib_per_cap) Num_sc Num_pl
## 11.3516592 0.7348012 1.1014948
## Num_fu Num_chl total_ser_por_10mil_hab
## 0.8426569 1.2172126 0.9980441
## Num_consor
## 1.1532651
shape_mun <- geobr::read_municipality(simplified = T, showProgress = F)
shape_estado <- geobr::read_state(simplified = T, showProgress = F)
# Uso particular para configurações
#setwd("C:/r_files/my_academic_projects/capacidades/capacitties")
#save.image("capacities_raw_data_4.RData")
#load("capacities_raw_data_4.RData")
# rm(list = setdiff(ls(), "map"))
#save.image("capacities_raw_data_shapes.RData")
load("capacities_raw_data_shapes.RData")
map <- shape_mun %>%
select(cod_mun = code_muni, geom) %>%
mutate(cod_mun = as.character(cod_mun)) %>%
left_join(capacities_4)
#save(map, "map.RData")
theme_map_manual <- function(){
theme(legend.position = c(0.35, 0.5),
legend.justification = c("right", "top"),
legend.background = element_blank(),
plot.title=element_text( hjust=0, vjust=-5, face='bold', size = 12))
}
levels_map <- levels(map$Sc_class)
# inverter ordem e incluir NA
levels_map <- c(levels_map[c(4:1)], NA)
# Definir cores
colors_map <- c(scales::viridis_pal(option = "D")(4), "gray40")
# Definir cor para cada level
names(colors_map) <- levels_map
# Definir rótulos
labels_map <- levels_map
labels_map[5] <- "Não analisados\nAcima de 50.000hab."
map_sc <- map %>%
ggplot()+
geom_sf(aes(fill = fct_infreq(Sc_class)),
color = NA)+
scale_fill_manual(name = "Secretarias",
values = colors_map,
na.value = "gray40",
limits = levels_map,
breaks = levels_map,
labels = labels_map)+
geom_sf(data=shape_estado, fill=NA, color = "black")+
ggthemes::theme_map()+
theme_map_manual()+
ggtitle("Secretarias exclusivas")
map_pl <- map %>%
ggplot()+
geom_sf(aes(fill = fct_infreq(Pl_class)), color = NA)+
scale_fill_manual(name = "Planos",
values = colors_map,
na.value = "gray40",
limits = levels_map,
breaks = levels_map,
labels = labels_map)+
geom_sf(data=shape_estado, fill=NA, color = "black")+
ggthemes::theme_map()+
theme_map_manual()+
ggtitle("Planos")
map_fu <- map %>%
ggplot()+
geom_sf(aes(fill = fct_infreq(Fu_class)), color = NA)+
scale_fill_manual(name = "Fundos",
values = colors_map,
na.value = "gray40",
limits = levels_map,
breaks = levels_map,
labels = labels_map)+
geom_sf(data=shape_estado, fill=NA, color = "black")+
ggthemes::theme_map()+
theme_map_manual()+
ggtitle("Fundos")
map_chl <- map %>%
ggplot()+
geom_sf(aes(fill = fct_infreq(Chl_class)),
color = NA)+
scale_fill_manual(name = "Conselhos",
values = colors_map,
na.value = "gray40",
limits = levels_map,
breaks = levels_map,
labels = labels_map)+
geom_sf(data=shape_estado, fill=NA, color = "black")+
ggthemes::theme_map()+
theme_map_manual()+
ggtitle("Conselhos")
mapas <- gridExtra::grid.arrange(map_sc, map_pl, map_fu, map_chl, ncol = 2)
mapas
## TableGrob (2 x 2) "arrange": 4 grobs
## z cells name grob
## 1 1 (1-1,1-1) arrange gtable[layout]
## 2 2 (1-1,2-2) arrange gtable[layout]
## 3 3 (2-2,1-1) arrange gtable[layout]
## 4 4 (2-2,2-2) arrange gtable[layout]
Não reportadas no artigo
cap_cor <- capacities_4 %>%
select(pib_per_cap, idhm, starts_with("Num"), total_ser_por_10mil_hab, populacao)
corr <- round(cor(cap_cor), 2)
ggcorrplot(corr, hc.order = F,
type = "lower",
show.diag = T,
pch = 12,
pch.cex = 12,
tl.cex = 12,
lab = TRUE,
lab_size = 3,
method="circle",
colors = c("tomato2", "white", "springgreen3"),
title="Correlação entre variáveis numéricas",
ggtheme=theme_bw)
sjPlot::sjt.xtab(capacities_4$idhm_quintil,
capacities_4$regiao,
encoding = "windows",
show.summary = F,
show.row.prc = T,
show.col.prc = T,
title = "IDHM por região")
| idhm_quintil | regiao | Total | ||||
|---|---|---|---|---|---|---|
| 1 - Norte | 2 - Nordeste | 3 - Sudeste | 4 - Sul | 5 - Centro-Oeste | ||
| primeiro |
128 13.3 % 34.8 % |
787 81.7 % 50 % |
43 4.5 % 3.1 % |
2 0.2 % 0.2 % |
3 0.3 % 0.7 % |
963 100 % 19.9 % |
| segundo |
113 11.8 % 30.7 % |
645 67.2 % 41 % |
149 15.5 % 10.6 % |
31 3.2 % 2.9 % |
22 2.3 % 5.3 % |
960 100 % 19.8 % |
| terceiro |
108 11.1 % 29.3 % |
133 13.7 % 8.4 % |
385 39.5 % 27.4 % |
210 21.6 % 19.5 % |
138 14.2 % 33 % |
974 100 % 20.1 % |
| quarto |
16 1.6 % 4.3 % |
8 0.8 % 0.5 % |
385 39.3 % 27.4 % |
376 38.4 % 34.9 % |
194 19.8 % 46.4 % |
979 100 % 20.2 % |
| quinto |
3 0.3 % 0.8 % |
1 0.1 % 0.1 % |
445 46 % 31.6 % |
458 47.3 % 42.5 % |
61 6.3 % 14.6 % |
968 100 % 20 % |
| Total |
368 7.6 % 100 % |
1574 32.5 % 100 % |
1407 29 % 100 % |
1077 22.2 % 100 % |
418 8.6 % 100 % |
4844 100 % 100 % |
sjPlot::sjt.xtab(capacities_4$idhm_quintil,
capacities_4$faixa_pop,
encoding = "UTF-8",
show.summary = F,
show.row.prc = T,
show.col.prc = T,
title = "IDHM por tamanho população")
| idhm_quintil | faixa_pop | Total | |||
|---|---|---|---|---|---|
| 1 - Até 5000 | 2 - 5001 até 10000 | 3 - 10001 até 20000 | 4 - 20001 até 50000 | ||
| primeiro |
141 14.6 % 11.5 % |
248 25.8 % 20.7 % |
353 36.7 % 26 % |
221 22.9 % 20.9 % |
963 100 % 19.9 % |
| segundo |
168 17.5 % 13.7 % |
232 24.2 % 19.3 % |
330 34.4 % 24.3 % |
230 24 % 21.8 % |
960 100 % 19.8 % |
| terceiro |
318 32.6 % 25.9 % |
277 28.4 % 23.1 % |
212 21.8 % 15.6 % |
167 17.1 % 15.8 % |
974 100 % 20.1 % |
| quarto |
310 31.7 % 25.2 % |
249 25.4 % 20.8 % |
255 26 % 18.8 % |
165 16.9 % 15.6 % |
979 100 % 20.2 % |
| quinto |
293 30.3 % 23.8 % |
193 19.9 % 16.1 % |
208 21.5 % 15.3 % |
274 28.3 % 25.9 % |
968 100 % 20 % |
| Total |
1230 25.4 % 100 % |
1199 24.8 % 100 % |
1358 28 % 100 % |
1057 21.8 % 100 % |
4844 100 % 100 % |
sjPlot::sjt.xtab(capacities_4$idhm_quintil,
capacities_4$Sc_class,
encoding = "UTF-8",
show.summary = F,
show.row.prc = T,
show.col.prc = T)
| idhm_quintil | Sc_class | Total | |||
|---|---|---|---|---|---|
| Não possui | Possui 1 | Possui 2 | Possui 3 | ||
| primeiro |
8 0.8 % 3.6 % |
75 7.8 % 12.8 % |
363 37.7 % 18.5 % |
517 53.7 % 25 % |
963 100 % 19.9 % |
| segundo |
14 1.5 % 6.3 % |
109 11.4 % 18.6 % |
381 39.7 % 19.4 % |
456 47.5 % 22.1 % |
960 100 % 19.8 % |
| terceiro |
31 3.2 % 14 % |
106 10.9 % 18.1 % |
426 43.7 % 21.7 % |
411 42.2 % 19.9 % |
974 100 % 20.1 % |
| quarto |
61 6.2 % 27.5 % |
129 13.2 % 22 % |
418 42.7 % 21.3 % |
371 37.9 % 17.9 % |
979 100 % 20.2 % |
| quinto |
108 11.2 % 48.6 % |
168 17.4 % 28.6 % |
379 39.2 % 19.3 % |
313 32.3 % 15.1 % |
968 100 % 20 % |
| Total |
222 4.6 % 100 % |
587 12.1 % 100 % |
1967 40.6 % 100 % |
2068 42.7 % 100 % |
4844 100 % 100 % |
sjt.xtab(norte$idhm_quintil,
norte$Sc_class,
encoding = "UTF-8",
show.summary = F,
show.row.prc = T,
show.col.prc = T,
title = "Norte")
| idhm_quintil | Sc_class | Total | |||
|---|---|---|---|---|---|
| Não possui | Possui 1 | Possui 2 | Possui 3 | ||
| primeiro |
1 0.8 % 100 % |
8 6.2 % 20 % |
34 26.6 % 25 % |
85 66.4 % 44.5 % |
128 100 % 34.8 % |
| segundo |
0 0 % 0 % |
24 21.2 % 60 % |
37 32.7 % 27.2 % |
52 46 % 27.2 % |
113 100 % 30.7 % |
| terceiro |
0 0 % 0 % |
7 6.5 % 17.5 % |
57 52.8 % 41.9 % |
44 40.7 % 23 % |
108 100 % 29.3 % |
| quarto |
0 0 % 0 % |
1 6.2 % 2.5 % |
5 31.2 % 3.7 % |
10 62.5 % 5.2 % |
16 100 % 4.3 % |
| quinto |
0 0 % 0 % |
0 0 % 0 % |
3 100 % 2.2 % |
0 0 % 0 % |
3 100 % 0.8 % |
| Total |
1 0.3 % 100 % |
40 10.9 % 100 % |
136 37 % 100 % |
191 51.9 % 100 % |
368 100 % 100 % |
sjt.xtab(nordeste$idhm_quintil,
nordeste$Sc_class,
encoding = "UTF-8",
show.summary = F,
show.row.prc = T,
show.col.prc = T,
title = "Nordeste")
| idhm_quintil | Sc_class | Total | |||
|---|---|---|---|---|---|
| Não possui | Possui 1 | Possui 2 | Possui 3 | ||
| primeiro |
6 0.8 % 46.2 % |
61 7.8 % 41.5 % |
317 40.3 % 49.5 % |
403 51.2 % 52.1 % |
787 100 % 50 % |
| segundo |
6 0.9 % 46.2 % |
69 10.7 % 46.9 % |
271 42 % 42.3 % |
299 46.4 % 38.6 % |
645 100 % 41 % |
| terceiro |
0 0 % 0 % |
16 12 % 10.9 % |
49 36.8 % 7.7 % |
68 51.1 % 8.8 % |
133 100 % 8.4 % |
| quarto |
0 0 % 0 % |
1 12.5 % 0.7 % |
3 37.5 % 0.5 % |
4 50 % 0.5 % |
8 100 % 0.5 % |
| quinto |
1 100 % 7.7 % |
0 0 % 0 % |
0 0 % 0 % |
0 0 % 0 % |
1 100 % 0.1 % |
| Total |
13 0.8 % 100 % |
147 9.3 % 100 % |
640 40.7 % 100 % |
774 49.2 % 100 % |
1574 100 % 100 % |
sjt.xtab(centro_oeste$idhm_quintil,
centro_oeste$Sc_class,
encoding = "UTF-8",
show.summary = F,
show.row.prc = T,
show.col.prc = T,
title = "Centro-Oeste")
| idhm_quintil | Sc_class | Total | |||
|---|---|---|---|---|---|
| Não possui | Possui 1 | Possui 2 | Possui 3 | ||
| primeiro |
0 0 % 0 % |
2 66.7 % 5.7 % |
0 0 % 0 % |
1 33.3 % 0.5 % |
3 100 % 0.7 % |
| segundo |
0 0 % 0 % |
0 0 % 0 % |
13 59.1 % 6.7 % |
9 40.9 % 4.8 % |
22 100 % 5.3 % |
| terceiro |
2 1.4 % 100 % |
11 8 % 31.4 % |
59 42.8 % 30.3 % |
66 47.8 % 35.5 % |
138 100 % 33 % |
| quarto |
0 0 % 0 % |
18 9.3 % 51.4 % |
94 48.5 % 48.2 % |
82 42.3 % 44.1 % |
194 100 % 46.4 % |
| quinto |
0 0 % 0 % |
4 6.6 % 11.4 % |
29 47.5 % 14.9 % |
28 45.9 % 15.1 % |
61 100 % 14.6 % |
| Total |
2 0.5 % 100 % |
35 8.4 % 100 % |
195 46.7 % 100 % |
186 44.5 % 100 % |
418 100 % 100 % |
sjt.xtab(sudeste$idhm_quintil,
sudeste$Sc_class,
encoding = "UTF-8",
show.summary = F,
show.row.prc = T,
show.col.prc = T,
title = "Sudeste")
| idhm_quintil | Sc_class | Total | |||
|---|---|---|---|---|---|
| Não possui | Possui 1 | Possui 2 | Possui 3 | ||
| primeiro |
1 2.3 % 2.1 % |
4 9.3 % 2.8 % |
11 25.6 % 2.2 % |
27 62.8 % 3.8 % |
43 100 % 3.1 % |
| segundo |
2 1.3 % 4.3 % |
14 9.4 % 9.9 % |
43 28.9 % 8.4 % |
90 60.4 % 12.7 % |
149 100 % 10.6 % |
| terceiro |
11 2.9 % 23.4 % |
40 10.4 % 28.2 % |
147 38.2 % 28.8 % |
187 48.6 % 26.4 % |
385 100 % 27.4 % |
| quarto |
18 4.7 % 38.3 % |
37 9.6 % 26.1 % |
139 36.1 % 27.3 % |
191 49.6 % 27 % |
385 100 % 27.4 % |
| quinto |
15 3.4 % 31.9 % |
47 10.6 % 33.1 % |
170 38.2 % 33.3 % |
213 47.9 % 30.1 % |
445 100 % 31.6 % |
| Total |
47 3.3 % 100 % |
142 10.1 % 100 % |
510 36.2 % 100 % |
708 50.3 % 100 % |
1407 100 % 100 % |
sjt.xtab(sul$idhm_quintil,
sul$Sc_class,
encoding = "UTF-8",
show.summary = F,
show.row.prc = T,
show.col.prc = T,
title = "Sul")
| idhm_quintil | Sc_class | Total | |||
|---|---|---|---|---|---|
| Não possui | Possui 1 | Possui 2 | Possui 3 | ||
| primeiro |
0 0 % 0 % |
0 0 % 0 % |
1 50 % 0.2 % |
1 50 % 0.5 % |
2 100 % 0.2 % |
| segundo |
6 19.4 % 3.8 % |
2 6.5 % 0.9 % |
17 54.8 % 3.5 % |
6 19.4 % 2.9 % |
31 100 % 2.9 % |
| terceiro |
18 8.6 % 11.3 % |
32 15.2 % 14.3 % |
114 54.3 % 23.5 % |
46 21.9 % 22 % |
210 100 % 19.5 % |
| quarto |
43 11.4 % 27 % |
72 19.1 % 32.3 % |
177 47.1 % 36.4 % |
84 22.3 % 40.2 % |
376 100 % 34.9 % |
| quinto |
92 20.1 % 57.9 % |
117 25.5 % 52.5 % |
177 38.6 % 36.4 % |
72 15.7 % 34.4 % |
458 100 % 42.5 % |
| Total |
159 14.8 % 100 % |
223 20.7 % 100 % |
486 45.1 % 100 % |
209 19.4 % 100 % |
1077 100 % 100 % |